/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Codigo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author kyerte
 */
public class ConsultaCita {

    private Connection conexion = null;
    private PreparedStatement consultarTodasLasCitas = null;
    private PreparedStatement insertarNuevaCita = null;
    private PreparedStatement actualizarCita = null;
    private PreparedStatement eliminarCita = null;
    private PreparedStatement obtenerIdCita = null;

    ConsultaCita() {
        conexion = FrmPrincipal.conexion;
        try {
            consultarTodasLasCitas = conexion.prepareStatement("SELECT idCita, Clientes.Nombre, "
                    + "Promotor.Nombre, Fecha, Hora, Lugar, Observaciones, Tipo "
                    + "FROM Cita JOIN Clientes, Promotor WHERE Clientes.idCliente=Cita.idCliente"
                    + " AND Promotor.idPromotor=Cita.idPromotor AND Cita.Fecha > CURDATE()-7 ORDER BY"
                    + " Cita.Fecha");
            insertarNuevaCita = conexion.prepareStatement("INSERT INTO Cita(idCliente, "
                    + "idPromotor, Fecha, Hora, Lugar, Observaciones, Tipo) "
                    + "VALUES(?,?,?,?,?,?,?)");
            actualizarCita = conexion.prepareStatement("UPDATE Cita SET idCliente=?, "
                    + "idPromotor=?, Fecha=?, Hora=?, Lugar=?, Observaciones=?, "
                    + "Tipo=? WHERE idCita=?");
            eliminarCita = conexion.prepareStatement("DELETE FROM Cita WHERE idCita=?");
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }
    }

    public List<Cita> obtenerTodasLasCitas() {

        List<Cita> resultados = null;
        ResultSet conjuntoResultados = null;

        try {

            conjuntoResultados = consultarTodasLasCitas.executeQuery();
            resultados = new ArrayList<Cita>();

            while (conjuntoResultados.next()) {

                resultados.add(new Cita(conjuntoResultados.getInt("idCita"),
                        conjuntoResultados.getString("Clientes.Nombre"),
                        conjuntoResultados.getString("Promotor.Nombre"),
                        conjuntoResultados.getDate("Fecha"),
                        conjuntoResultados.getTime("Hora"),
                        conjuntoResultados.getString("Lugar"),
                        conjuntoResultados.getString("Observaciones"),
                        conjuntoResultados.getString("Tipo")));
            }

        } catch (SQLException ex) {
            ex.printStackTrace();

        } finally {

            try {

                conjuntoResultados.close();

            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return resultados;
    }

    public int agregarNuevaCita(int idCliente, int idPromotor, java.sql.Date fecha,
            java.sql.Time hora, String lugar, String observaciones, String tipo) {
        int resultado = 0;
        try {
            insertarNuevaCita.setInt(1, idCliente);
            insertarNuevaCita.setInt(2, idPromotor);
            insertarNuevaCita.setDate(3, fecha);
            insertarNuevaCita.setTime(4, hora);
            insertarNuevaCita.setString(5, lugar);
            insertarNuevaCita.setString(6, observaciones);
            insertarNuevaCita.setString(7, tipo);

            resultado = insertarNuevaCita.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    public int actualizarCita(int idCliente, int idPromotor, java.sql.Date fecha,
            java.sql.Time hora, String lugar, String observaciones, String tipo,
            int idCita) {
        int resultado = 0;
        try {
            actualizarCita.setInt(1, idCliente);
            actualizarCita.setInt(2, idPromotor);
            actualizarCita.setDate(3, fecha);
            actualizarCita.setTime(4, hora);
            actualizarCita.setString(5, lugar);
            actualizarCita.setString(6, observaciones);
            actualizarCita.setString(7, tipo);
            actualizarCita.setInt(8, idCita);

            resultado = actualizarCita.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    public int eliminarCita(int idCita) {
        int resultado = 0;
        try {
            eliminarCita.setInt(1, idCita);
            resultado = eliminarCita.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    private void close() {
        try {
            conexion.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
